﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using SIMCObjetoNegocio;
using SIMCPresenter;
using System.Web.Security;

public partial class SiteSimc : System.Web.UI.MasterPage, IPrincipalPresenterView
{  
    #region Atributos
        
    private MembershipUsuario usuario;
    private PrincipalPresenter m_Presenter;
 
    #endregion

    #region Eventos

    protected override void OnInit(EventArgs e)
    {
        usuario = ((MembershipUsuario)Session["Usuario"]);
        m_Presenter = new PrincipalPresenter(this);
        base.OnInit(e);        
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            if (Session["variable"] != null)
            {

                lblNombreUsuario.Text = usuario.NombreCompleto;
                Iniciar(null, null);                
                string pagina = Request.AppRelativeCurrentExecutionFilePath;
                switch (pagina)
                {
                    case "~/Principal.aspx": ((SessionVariable)Session["variable"]).MenuSeleccionado = "Principal"; break;
                    case "~/Portafolios/BusquedaPortafolios.aspx": ((SessionVariable)Session["variable"]).MenuSeleccionado = "Portafolios"; break;
                    case "~/Administracion/Administracion.aspx": ((SessionVariable)Session["variable"]).MenuSeleccionado = "Administración"; break;

                }
                NavigationMenu.FindItem(((SessionVariable)Session["variable"]).MenuSeleccionado).Selected = true;
                NavigationMenu.FindItem("Principal").NavigateUrl = "~/Principal.aspx";

            }
            else
            {
                Response.Redirect("~/Account/Login.aspx");
            } 
        }
    }

    public event EventHandler<EventArgs> BuscarRoles;
    public event EventHandler<EventArgs> CambiarRol;
    public event EventHandler<EventArgs> Iniciar;

    protected void lbtnSalir_Click(object sender, EventArgs e)
    {    
        Session["variable"] = null;        
        Response.Redirect("~/Account/Login.aspx");
    }

    protected void btnCambiarRol_Click(object sender, EventArgs e)
    {
        BuscarRoles(null, null);
    }

    protected void btnCambioRol_Click(object sender, EventArgs e)
    {
        CambiarRol(null, null);
        Response.Redirect("~/Principal.aspx");
    }

    protected void btnCancelarRol_Click(object sender, EventArgs e)
    {
        PuedeCambiarRol = false;
    }
     
    #endregion

    #region Propiedades    

    public IList<Rol> ListaRoles
    {        
        set
        {
            ddlRoles.DataTextField = "Descripcion";
            ddlRoles.DataValueField = "Id";

            ddlRoles.DataSource = value;
            ddlRoles.DataBind();

            ddlRoles.SelectedValue = usuario.rol.Id;          
        }
    }  

    public string CodigoRolSeleccionado
    {
        get { return ddlRoles.SelectedValue; }
    }


    public string DescripcionRolSeleccionado
    {
        get { return ddlRoles.SelectedItem.Text; }
    }
  
    public bool EsPorDefecto
    {
        get
        {
            return chbxPorDefecto.Checked;
        }        
    }

    public bool EsUsuarioConClaveTemporal
    {
        get { return usuario.TieneClaveTemporal; }
    }    

    public bool PuedeCambiarRol
    {
        set
        {
            TablaCambioRol.Visible = value;
            btnCambiarRol.Visible = !value;
            btnCambiarRol.Text = usuario.rol.Descripcion + " (Cambiar)";

        }
    }

    public void MostrarMensaje(string p_Mensaje, bool p_Exito)
    {
        lblMensajeError.Text = p_Mensaje;
    }

    #region Seguridad

    public bool PuedeVerMenuPricipal
    {
        set
        {
            NavigationMenu.Visible = value;
        }
    }

    public bool PuedeVerMenuPortafolio
    {
        set
        {
            if (value == true)
            {
                MenuItem Portafolios = NavigationMenu.FindItem("Portafolios");

                if (Portafolios == null)
                {

                    Portafolios = new MenuItem();
                    Portafolios.Text = "Portafolios";
                    Portafolios.NavigateUrl = "~/Portafolios/BusquedaPortafolios.aspx";
                    NavigationMenu.Items.Add(Portafolios);

                }
            }
            else
            {
                MenuItem Portafolios = NavigationMenu.FindItem("Portafolios");

                if (Portafolios != null)
                {
                    NavigationMenu.Items.Remove(Portafolios);
                }
            }
        }
    }

    public bool PuedeVerMenuOrdenes
    {
        set
        {
            if (value == true)
            {
                MenuItem Ordenes = NavigationMenu.FindItem("Órdenes");

                if (Ordenes == null)
                {
                    Ordenes = new MenuItem();
                    Ordenes.Text = "Órdenes";
                    Ordenes.NavigateUrl = "#"; //OJO MODIFICAR URL
                    NavigationMenu.Items.Add(Ordenes);
                }
            }
            else
            {

                MenuItem Ordenes = NavigationMenu.FindItem("Órdenes");

                if (Ordenes != null)
                {
                    NavigationMenu.Items.Remove(Ordenes);
                }
            }
        }
    }

    public bool PuedeVerMenuAdministracion
    {
        set
        {
            if (value == true)
            {

                MenuItem Admistracion = NavigationMenu.FindItem("Administración");

                if (Admistracion == null)
                {
                    Admistracion = new MenuItem();
                    Admistracion.Text = "Administración";
                    Admistracion.NavigateUrl = "~/Administracion/Administracion.aspx";
                    NavigationMenu.Items.Add(Admistracion);

                }

            }
            else
            {
                MenuItem Admistracion = NavigationMenu.FindItem("Administración");

                if (Admistracion != null)
                {
                    NavigationMenu.Items.Remove(Admistracion);
                }
            }
        }
    }


    #endregion

    public int IdUsuario
    {
        get { return usuario.UserId; }
    }

    public Rol RolUsuario
    {
        get
        {
            return usuario.rol;
        }
        set
        {
            usuario.rol = value;
        }
    }

    public string ObjetoSeguridad
    {
        get
        {
            if (Request.QueryString["objeto"] != null)
            {
                return string.Format("{0}.{1}", SegDiccionario.o_WebMaster, Request.QueryString["objeto"]);
            }

            return SegDiccionario.o_WebMaster;
        }
    }   

    #endregion   
}
